/*
 * 
 * 
 * 
 */
package com.hboxs.asl.dao;

import com.hboxs.asl.Filter;
import com.hboxs.asl.Order;
import com.hboxs.asl.Page;
import com.hboxs.asl.Pageable;
import com.hboxs.asl.entity.Consultation;
import com.hboxs.asl.entity.Member;
import com.hboxs.asl.entity.Product;

import java.util.List;

/**
 * Dao - 咨询
 */
public interface ConsultationDao extends BaseDao<Consultation, Long> {

    /**
     * 查找咨询
     *
     * @param member  会员
     * @param product 商品
     * @param isShow  是否显示
     * @param count   数量
     * @param filters 筛选
     * @param orders  排序
     * @return 咨询
     */
    List<Consultation> findList(Member member, Product product, Boolean isShow, Integer count, List<Filter> filters, List<Order> orders);

    /**
     * 查找咨询分页
     *
     * @param member   会员
     * @param product  商品
     * @param isShow   是否显示
     * @param pageable 分页信息
     * @return 咨询分页
     */
    Page<Consultation> findPage(Member member, Product product, Boolean isShow, Pageable pageable);

    /**
     * 查找咨询数量
     *
     * @param member  会员
     * @param product 商品
     * @param isShow  是否显示
     * @return 咨询数量
     */
    Long count(Member member, Product product, Boolean isShow);

    /**
     * 获取最新的三个咨询
     *
     * @param product
     * @return
     */
    List<Consultation> lastThreeConsultations(Product product);

}